    /**
     * @function do_upload
     *
     * @author   Vo Thanh Minh <thanhminhld@yahoo.com - thanhminhld@gmail.com>
     * @access   private
     * @param    string $imgFieldName
     * @return   Array
(
    [status] => Success
    [error] =>
    [file_name] => Bilitis_-_Guitar.mp3
    [file_type] => audio/mpeg
    [file_path] => /opt/lampp/htdocs/chuanghiemquang/application/uploads/songmusic/
    [full_path] => /opt/lampp/htdocs/chuanghiemquang/application/uploads/songmusic/Bilitis_-_Guitar.mp3
    [raw_name] => Bilitis_-_Guitar
    [orig_name] => Bilitis_-_Guitar.mp3
    [file_ext] => .mp3
    [file_size] => 1969.05
    [is_image] =>
    [image_width] =>
    [image_height] =>
    [image_type] =>
    [image_size_str] => Bilitis_-_Guitar_thumb.mp3
)
     */
    private function do_upload($imgFieldName = '', $resizeImg = FALSE, $resizeWH = array(), $strExt = 'jpg|jpeg|png')
    {
        $response = array('status' => '',
                          'error'  => '');
        if ( ! is_string($imgFieldName) || strlen($imgFieldName) <= 0) {
            return $response = array('status' => 'Error',
                                     'error'  => '');
        }
        $controlName = $this->input->get_post('c');
        if (is_string($controlName) && strlen($controlName) > 0 &&
            function_exists('realpath') && @realpath(UPLOAD_PATH . $controlName) == FALSE) {
            mkdir(UPLOAD_PATH . $controlName, 0777);
        }
        if ($_SERVER['REQUEST_METHOD']==='POST') {
            $config['upload_path']   = UPLOAD_PATH . $controlName;
            $config['allowed_types'] = $strExt;
            $config['encrypt_name']  = FALSE;
            $this->load->library('upload', $config);

            if( !$this->upload->do_upload($imgFieldName) ) {
                $response['status'] = 'Error';
                $response['error'] = $this->upload->display_errors();

            } else {
                $response['status'] = 'Success';
                $data = $this->upload->data();
                $response = array_merge($response, $data);
                if ($resizeImg == TRUE && is_array($resizeWH) &&
                    $resizeWH['width'] > 0 && $resizeWH['height'] > 0) {
                    $file_name = $response['file_name'];
                    $file_name = substr($file_name, strrpos($file_name, " "));
                    /* This config for resize image */
                    $configReZ['image_library'] = 'gd2';
                    $configReZ['create_thumb']  = TRUE;
                    $configReZ['width']         = $resizeWH['width'];
                    $configReZ['height']        = $resizeWH['height'];
                    $configReZ['master_dim']    = 'auto';
                    $configReZ['source_image']  = UPLOAD_PATH . $controlName . '/' . $file_name;
                    $this->load->library('image_lib', $configReZ);

                    $response['resize_status']  = '';
                    $response['resize_err']     = '';
                    $response['resize_name']    = '';
                    if (! $this->image_lib->resize()) {
                        $response['resize_status']    = 'Error';
                        $response['resize_err'] = $this->image_lib->display_errors() . $configReZ['source_image'];
                    } else {
                        $response['resize_status']    = 'Success';
                        $ext = substr($file_name, strrpos($file_name, "."));
                        $file_name = substr($file_name, 0, strrpos($file_name, '.'));
                        $response['resize_name'] = $file_name . '_thumb' . $ext;
                    }
                }
            }
        }
        return $response;
    }